package apibasej.db.transaction;

import java.io.Closeable;
import java.util.ArrayList;

public abstract class CursorSelect implements Closeable{ // extends ConfigManager // usar sempre o config da GenericTransaction

	
	// o index é a posição da coluna para a linha atual (cursor atual), começa com 0 
	public abstract Object getValResultSet(Class<?> typeReturn, boolean ignoreResultNullForPrimitives, int index) throws Exception;
	
	public abstract boolean next() throws Exception;
	
	public abstract ArrayList<String> getNameColsStr() throws Exception;
	
	public abstract int getCtCols() throws Exception;
	
	//public abstract String getColumnName(int posCol) throws Exception;
	
	public abstract Integer getTotalCountWithoutPagination() throws Exception;
	
	public abstract void verifyCloseConnectionAfterExecute();// este método fecha somente se for auto commit e close automático
	
	// já tem na interface Closeable, mas define denovo para não poder lançar exceção
	public abstract void close(); // este método deve sempre fechar a conexão
	
	//public abstract long getTIniSelTemp(); // nano time
	
	public abstract int getNumRowsRead();
}
